<TagAttribute("scenario","scnr","????","????",2,1456)>
Public Class SCENARIO_TAG
Inherits HaloTag
Public Const Extension as String = "scenario"
Public Const FourCC as String = "scnr"
Public Const ParentFourCC as String = "????"
Public Const GrandParentFourCC as String = "????"
Public Const [Version] as Short = 2
Public Const HeaderLength as Integer = 1456

''' <summary>
''' 
''' </summary>
<TagField("DON'T USE", 16, 10)>
Public dont_use as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("WON'T USE", 16, 10)>
Public wont_use as New TAG_REFERENCE

''' <summary>
''' set me!! me!!!  i do something cool!!!  you'll be happy forever if there this tag reference is filled in!  don't believe the lies!!! LIESSSS!!!!!!!!  YESS, MY PRECIOUSSSSS, LIESSSS...
''' </summary>
<TagField("CAN'T USE", 16, 10)>
Public cant_use as New TAG_REFERENCE

''' <summary>
''' scenario_sky_reference_block
''' </summary>
<TagField("skies", 16, 11)>
Public skies as List(Of SKIES_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 17)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' scenario_child_scenario_block
''' </summary>
<TagField("child scenarios", 32, 11)>
Public child_scenarios as List(Of CHILD_SCENARIOS_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("local north", 1, 0)>
Public local_north as Single

''' <summary>
''' 
''' </summary>
<TagField("", 20, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 136, -1)>
Public padding_1 as Byte()

''' <summary>
''' predicted_resource_block
''' </summary>
<TagField("predicted resources", 8, 11)>
Public predicted_resources as List(Of PREDICTED_RESOURCES_BLOCK)

''' <summary>
''' scenario_function_block
''' </summary>
<TagField("functions", 120, 11)>
Public functions as List(Of FUNCTIONS_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("editor scenario data", 1, 22)>
Public editor_scenario_data as New DATA_CONTAINER

''' <summary>
''' editor_comment_block
''' </summary>
<TagField("comments", 48, 11)>
Public comments as List(Of COMMENTS_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 224, -1)>
Public padding_2 as Byte()

''' <summary>
''' scenario_object_names_block
''' </summary>
<TagField("object names", 36, 11)>
Public object_names as List(Of OBJECT_NAMES_BLOCK)

''' <summary>
''' scenario_scenery_block
''' </summary>
<TagField("scenery", 72, 11)>
Public scenery as List(Of SCENERY_BLOCK)

''' <summary>
''' scenario_scenery_palette_block
''' </summary>
<TagField("scenery palette", 48, 11)>
Public scenery_palette as List(Of SCENERY_PALETTE_BLOCK)

''' <summary>
''' scenario_biped_block
''' </summary>
<TagField("bipeds", 120, 11)>
Public bipeds as List(Of BIPEDS_BLOCK)

''' <summary>
''' scenario_biped_palette_block
''' </summary>
<TagField("biped palette", 48, 11)>
Public biped_palette as List(Of BIPED_PALETTE_BLOCK)

''' <summary>
''' scenario_vehicle_block
''' </summary>
<TagField("vehicles", 120, 11)>
Public vehicles as List(Of VEHICLES_BLOCK)

''' <summary>
''' scenario_vehicle_palette_block
''' </summary>
<TagField("vehicle palette", 48, 11)>
Public vehicle_palette as List(Of VEHICLE_PALETTE_BLOCK)

''' <summary>
''' scenario_equipment_block
''' </summary>
<TagField("equipment", 40, 11)>
Public equipment as List(Of EQUIPMENT_BLOCK)

''' <summary>
''' scenario_equipment_palette_block
''' </summary>
<TagField("equipment palette", 48, 11)>
Public equipment_palette as List(Of EQUIPMENT_PALETTE_BLOCK)

''' <summary>
''' scenario_weapon_block
''' </summary>
<TagField("weapons", 92, 11)>
Public weapons as List(Of WEAPONS_BLOCK)

''' <summary>
''' scenario_weapon_palette_block
''' </summary>
<TagField("weapon palette", 48, 11)>
Public weapon_palette as List(Of WEAPON_PALETTE_BLOCK)

''' <summary>
''' device_group_block
''' </summary>
<TagField("device groups", 52, 11)>
Public device_groups as List(Of DEVICE_GROUPS_BLOCK)

''' <summary>
''' scenario_machine_block
''' </summary>
<TagField("machines", 64, 11)>
Public machines as List(Of MACHINES_BLOCK)

''' <summary>
''' scenario_machine_palette_block
''' </summary>
<TagField("machine palette", 48, 11)>
Public machine_palette as List(Of MACHINE_PALETTE_BLOCK)

''' <summary>
''' scenario_control_block
''' </summary>
<TagField("controls", 64, 11)>
Public controls as List(Of CONTROLS_BLOCK)

''' <summary>
''' scenario_control_palette_block
''' </summary>
<TagField("control palette", 48, 11)>
Public control_palette as List(Of CONTROL_PALETTE_BLOCK)

''' <summary>
''' scenario_light_fixture_block
''' </summary>
<TagField("light fixtures", 88, 11)>
Public light_fixtures as List(Of LIGHT_FIXTURES_BLOCK)

''' <summary>
''' scenario_light_fixture_palette_block
''' </summary>
<TagField("light fixtures palette", 48, 11)>
Public light_fixtures_palette as List(Of LIGHT_FIXTURES_PALETTE_BLOCK)

''' <summary>
''' scenario_sound_scenery_block
''' </summary>
<TagField("sound scenery", 40, 11)>
Public sound_scenery as List(Of SOUND_SCENERY_BLOCK)

''' <summary>
''' scenario_sound_scenery_palette_block
''' </summary>
<TagField("sound scenery palette", 48, 11)>
Public sound_scenery_palette as List(Of SOUND_SCENERY_PALETTE_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 84, -1)>
Public padding_3 as Byte()

''' <summary>
''' scenario_profiles_block
''' </summary>
<TagField("player starting profile", 104, 11)>
Public player_starting_profile as List(Of PLAYER_STARTING_PROFILE_BLOCK)

''' <summary>
''' scenario_players_block
''' </summary>
<TagField("player starting locations", 52, 11)>
Public player_starting_locations as List(Of PLAYER_STARTING_LOCATIONS_BLOCK)

''' <summary>
''' scenario_trigger_volume_block
''' </summary>
<TagField("trigger volumes", 96, 11)>
Public trigger_volumes as List(Of TRIGGER_VOLUMES_BLOCK)

''' <summary>
''' recorded_animation_block
''' </summary>
<TagField("recorded animations", 64, 11)>
Public recorded_animations as List(Of RECORDED_ANIMATIONS_BLOCK)

''' <summary>
''' scenario_netgame_flags_block
''' </summary>
<TagField("netgame flags", 148, 11)>
Public netgame_flags as List(Of NETGAME_FLAGS_BLOCK)

''' <summary>
''' scenario_netgame_equipment_block
''' </summary>
<TagField("netgame equipment", 144, 11)>
Public netgame_equipment as List(Of NETGAME_EQUIPMENT_BLOCK)

''' <summary>
''' scenario_starting_equipment_block
''' </summary>
<TagField("starting equipment", 204, 11)>
Public starting_equipment as List(Of STARTING_EQUIPMENT_BLOCK)

''' <summary>
''' scenario_bsp_switch_trigger_volume_block
''' </summary>
<TagField("bsp switch trigger volumes", 8, 11)>
Public bsp_switch_trigger_volumes as List(Of BSP_SWITCH_TRIGGER_VOLUMES_BLOCK)

''' <summary>
''' scenario_decals_block
''' </summary>
<TagField("decals", 16, 11)>
Public decals as List(Of DECALS_BLOCK)

''' <summary>
''' scenario_decal_palette_block
''' </summary>
<TagField("decal palette", 16, 11)>
Public decal_palette as List(Of DECAL_PALETTE_BLOCK)

''' <summary>
''' scenario_detail_object_collection_palette_block
''' </summary>
<TagField("detail object collection palette", 48, 11)>
Public detail_object_collection_palette as List(Of DETAIL_OBJECT_COLLECTION_PALETTE_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 84, -1)>
Public padding_4 as Byte()

''' <summary>
''' actor_palette_block
''' </summary>
<TagField("actor palette", 16, 11)>
Public actor_palette as List(Of ACTOR_PALETTE_BLOCK)

''' <summary>
''' encounter_block
''' </summary>
<TagField("encounters", 176, 11)>
Public encounters as List(Of ENCOUNTERS_BLOCK)

''' <summary>
''' ai_command_list_block
''' </summary>
<TagField("command lists", 96, 11)>
Public command_lists as List(Of COMMAND_LISTS_BLOCK)

''' <summary>
''' ai_animation_reference_block
''' </summary>
<TagField("ai animation references", 60, 11)>
Public ai_animation_references as List(Of AI_ANIMATION_REFERENCES_BLOCK)

''' <summary>
''' ai_script_reference_block
''' </summary>
<TagField("ai script references", 40, 11)>
Public ai_script_references as List(Of AI_SCRIPT_REFERENCES_BLOCK)

''' <summary>
''' ai_recording_reference_block
''' </summary>
<TagField("ai recording references", 40, 11)>
Public ai_recording_references as List(Of AI_RECORDING_REFERENCES_BLOCK)

''' <summary>
''' ai_conversation_block
''' </summary>
<TagField("ai conversations", 116, 11)>
Public ai_conversations as List(Of AI_CONVERSATIONS_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("script syntax data", 1, 30)>
Public script_syntax_data as New DATA_CONTAINER

''' <summary>
''' 
''' </summary>
<TagField("script string data", 1, 22)>
Public script_string_data as New DATA_CONTAINER

''' <summary>
''' hs_scripts_block
''' </summary>
<TagField("scripts", 92, 11)>
Public scripts as List(Of SCRIPTS_BLOCK)

''' <summary>
''' hs_globals_block
''' </summary>
<TagField("globals", 92, 11)>
Public globals as List(Of GLOBALS_BLOCK)

''' <summary>
''' hs_references_block
''' </summary>
<TagField("references", 40, 11)>
Public references as List(Of REFERENCES_BLOCK)

''' <summary>
''' hs_source_files_block
''' </summary>
<TagField("source files", 52, 11)>
Public source_files as List(Of SOURCE_FILES_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding_5 as Byte()

''' <summary>
''' scenario_cutscene_flag_block
''' </summary>
<TagField("cutscene flags", 92, 11)>
Public cutscene_flags as List(Of CUTSCENE_FLAGS_BLOCK)

''' <summary>
''' scenario_cutscene_camera_point_block
''' </summary>
<TagField("cutscene camera points", 104, 11)>
Public cutscene_camera_points as List(Of CUTSCENE_CAMERA_POINTS_BLOCK)

''' <summary>
''' scenario_cutscene_title_block
''' </summary>
<TagField("cutscene titles", 96, 11)>
Public cutscene_titles as List(Of CUTSCENE_TITLES_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 108, -1)>
Public padding_6 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("custom object names", 16, 10)>
Public custom_object_names as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("ingame help text", 16, 10)>
Public ingame_help_text as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("hud messages", 16, 10)>
Public hud_messages as New TAG_REFERENCE

''' <summary>
''' scenario_structure_bsps_block
''' </summary>
<TagField("structure bsps", 32, 11)>
Public structure_bsps as List(Of STRUCTURE_BSPS_BLOCK)
Public Class SKIES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("sky", 16, 10)>
Public sky as New TAG_REFERENCE

End Class
Public Class CHILD_SCENARIOS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("child scenario", 16, 10)>
Public child_scenario as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding as Byte()

End Class
Public Class PREDICTED_RESOURCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 17)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("resource index", 1, 23)>
Public resource_index as Short

''' <summary>
''' 
''' </summary>
<TagField("tag index", 1, 4)>
Public tag_index as Integer

End Class
Public Class FUNCTIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' this is the period for the above function (lower values make the function oscillate quickly, higher values make it oscillate slowly)
''' </summary>
<TagField("period:seconds", 1, 0)>
Public period as Single

''' <summary>
''' multiply this function by the above period
''' </summary>
<TagField("scale period by", 1, 23)>
Public scale_period_by as Short

''' <summary>
''' 
''' </summary>
<TagField("function", 1, 17)>
Public _function as Short

''' <summary>
''' multiply this function by the result of the above function
''' </summary>
<TagField("scale function by", 1, 23)>
Public scale_function_by as Short

''' <summary>
''' the curve used for the wobble
''' </summary>
<TagField("wobble function", 1, 17)>
Public wobble_function as Short

''' <summary>
''' the length of time it takes for the magnitude of this function to complete a wobble
''' </summary>
<TagField("wobble period:seconds", 1, 0)>
Public wobble_period as Single

''' <summary>
''' the amount of random wobble in the magnitude
''' </summary>
<TagField("wobble magnitude:percent", 1, 0)>
Public wobble_magnitude as Single

''' <summary>
''' if non-zero, all values above the square wave threshold are snapped to 1.0, and all values below it are snapped to 0.0 to create a square wave.
''' </summary>
<TagField("square wave threshold", 1, 0)>
Public square_wave_threshold as Single

''' <summary>
''' the number of discrete values to snap to (e.g., a step count of 5 would snap the function to 0.00,0.25,0.50,0.75 or 1.00)
''' </summary>
<TagField("step count", 1, 23)>
Public step_count as Short

''' <summary>
''' 
''' </summary>
<TagField("map to", 1, 17)>
Public map_to as Short

''' <summary>
''' the number of times this function should repeat (e.g., a sawtooth count of 5 would give the function a value of 1.0 at each of 0.25,0.50,0.75 as well as at 1.0
''' </summary>
<TagField("sawtooth count", 1, 23)>
Public sawtooth_count as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' multiply this function (from a weapon, vehicle, etc.) final result of all of the above math
''' </summary>
<TagField("scale result by", 1, 23)>
Public scale_result_by as Short

''' <summary>
''' controls how the bounds, below, are used
''' </summary>
<TagField("bounds mode", 1, 17)>
Public bounds_mode as Short

''' <summary>
''' 
''' </summary>
<TagField("bounds", 2, 1)>
Public bounds as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_2 as Byte()

''' <summary>
''' if the specified function is off, so is this function
''' </summary>
<TagField("turn off with", 1, 23)>
Public turn_off_with as Short

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_4 as Byte()

End Class
Public Class COMMENTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("comment", 1, 22)>
Public comment as New DATA_CONTAINER

End Class
Public Class OBJECT_NAMES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

End Class
Public Class SCENERY_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_3 as Byte()

End Class
Public Class SCENERY_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class BIPEDS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("body vitality:[0,1]", 1, 0)>
Public body_vitality as Single

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding_5 as Byte()

End Class
Public Class BIPED_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class VEHICLES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("body vitality:[0,1]", 1, 0)>
Public body_vitality as Single

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_4 as Byte()

''' <summary>
''' on a multiplayer map, this determines which team the vehicle belongs to for custom vehicle sets.
''' </summary>
<TagField("multiplayer team index", 1, 9)>
Public multiplayer_team_index as Byte

''' <summary>
''' 
''' </summary>
<TagField("", 1, -1)>
Public padding_5 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("multiplayer spawn flags", 1, 19)>
Public multiplayer_spawn_flags as Short

''' <summary>
''' 
''' </summary>
<TagField("", 28, -1)>
Public padding_6 as Byte()

End Class
Public Class VEHICLE_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class EQUIPMENT_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("misc flags", 1, 19)>
Public misc_flags as Short

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

End Class
Public Class EQUIPMENT_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class WEAPONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("rounds left", 1, 23)>
Public rounds_left as Short

''' <summary>
''' 
''' </summary>
<TagField("rounds loaded", 1, 23)>
Public rounds_loaded as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_5 as Byte()

End Class
Public Class WEAPON_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class DEVICE_GROUPS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("initial value:[0,1]", 1, 0)>
Public initial_value as Single

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding as Byte()

End Class
Public Class MACHINES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("power group", 1, 23)>
Public power_group as Short

''' <summary>
''' 
''' </summary>
<TagField("position group", 1, 23)>
Public position_group as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags_1 as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_1 as Byte()

End Class
Public Class MACHINE_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class CONTROLS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("power group", 1, 23)>
Public power_group as Short

''' <summary>
''' 
''' </summary>
<TagField("position group", 1, 23)>
Public position_group as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags_1 as Integer

''' <summary>
''' 
''' </summary>
<TagField("*DON'T TOUCH THIS", 1, 23)>
Public unknown as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_2 as Byte()

End Class
Public Class CONTROL_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class LIGHT_FIXTURES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("power group", 1, 23)>
Public power_group as Short

''' <summary>
''' 
''' </summary>
<TagField("position group", 1, 23)>
Public position_group as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("color", 3, 2)>
Public color as Single()

''' <summary>
''' 
''' </summary>
<TagField("intensity", 1, 0)>
Public intensity as Single

''' <summary>
''' 
''' </summary>
<TagField("falloff angle:degrees", 1, 0)>
Public falloff_angle as Single

''' <summary>
''' 
''' </summary>
<TagField("cutoff angle:degrees", 1, 0)>
Public cutoff_angle as Single

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_1 as Byte()

End Class
Public Class LIGHT_FIXTURES_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class SOUND_SCENERY_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 23)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("name", 1, 23)>
Public name as Short

''' <summary>
''' 
''' </summary>
<TagField("not placed", 1, 19)>
Public not_placed as Short

''' <summary>
''' if non-zero, will try to use model permutations with names that end in that number, e.g. 7 would pick "body-7" and "head-7"
''' </summary>
<TagField("desired permutation", 1, 23)>
Public desired_permutation as Short

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("rotation", 3, 2)>
Public rotation as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

End Class
Public Class SOUND_SCENERY_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class PLAYER_STARTING_PROFILE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("starting health modifier:[0,1]", 1, 0)>
Public starting_health_modifier as Single

''' <summary>
''' 
''' </summary>
<TagField("starting shield modifier:[0,1]", 1, 0)>
Public starting_shield_modifier as Single

''' <summary>
''' 
''' </summary>
<TagField("primary weapon", 16, 10)>
Public primary_weapon as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("rounds loaded", 1, 23)>
Public rounds_loaded as Short

''' <summary>
''' 
''' </summary>
<TagField("rounds total", 1, 23)>
Public rounds_total as Short

''' <summary>
''' 
''' </summary>
<TagField("secondary weapon", 16, 10)>
Public secondary_weapon as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("rounds loaded", 1, 23)>
Public rounds_loaded_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("rounds total", 1, 23)>
Public rounds_total_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("starting fragmentation grenade count", 1, 9)>
Public starting_fragmentation_grenade_count as Byte

''' <summary>
''' 
''' </summary>
<TagField("starting plasma grenade count", 1, 9)>
Public starting_plasma_grenade_count as Byte

''' <summary>
''' 
''' </summary>
<TagField("starting <unknown> grenade count", 1, 9)>
Public starting_unknown_grenade_count as Byte

''' <summary>
''' 
''' </summary>
<TagField("starting <unknown> grenade count", 1, 9)>
Public starting_unknown_grenade_count_1 as Byte

''' <summary>
''' 
''' </summary>
<TagField("", 20, -1)>
Public padding as Byte()

End Class
Public Class PLAYER_STARTING_LOCATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("facing:degrees", 1, 0)>
Public facing as Single

''' <summary>
''' 
''' </summary>
<TagField("team index", 1, 23)>
Public team_index as Short

''' <summary>
''' 
''' </summary>
<TagField("bsp index", 1, 23)>
Public bsp_index as Short

''' <summary>
''' 
''' </summary>
<TagField("type 0", 1, 17)>
Public type_0 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 1", 1, 17)>
Public type_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 2", 1, 17)>
Public type_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 3", 1, 17)>
Public type_3 as Short

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding as Byte()

End Class
Public Class TRIGGER_VOLUMES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_1 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_2 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_3 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_4 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_5 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_6 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_7 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_8 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_9 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_10 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_11 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_12 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_13 as Single

''' <summary>
''' 
''' </summary>
<TagField("", 1, 0)>
Public unknown_14 as Single

End Class
Public Class RECORDED_ANIMATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("version", 1, 9)>
Public version as Byte

''' <summary>
''' 
''' </summary>
<TagField("raw animation data", 1, 9)>
Public raw_animation_data as Byte

''' <summary>
''' 
''' </summary>
<TagField("unit control data version", 1, 9)>
Public unit_control_data_version as Byte

''' <summary>
''' 
''' </summary>
<TagField("", 1, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("length of animation:ticks", 1, 23)>
Public length_of_animation as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("recorded animation event stream", 1, 22)>
Public recorded_animation_event_stream as New DATA_CONTAINER

End Class
Public Class NETGAME_FLAGS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("facing:degress", 1, 0)>
Public facing as Single

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 17)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("team index", 1, 23)>
Public team_index as Short

''' <summary>
''' 
''' </summary>
<TagField("weapon group", 16, 10)>
Public weapon_group as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 112, -1)>
Public padding as Byte()

End Class
Public Class NETGAME_EQUIPMENT_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("type 0", 1, 17)>
Public type_0 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 1", 1, 17)>
Public type_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 2", 1, 17)>
Public type_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 3", 1, 17)>
Public type_3 as Short

''' <summary>
''' 
''' </summary>
<TagField("team index", 1, 23)>
Public team_index as Short

''' <summary>
''' 
''' </summary>
<TagField("spawn time (in seconds, 0 = default)", 1, 23)>
Public spawn_time as Short

''' <summary>
''' 
''' </summary>
<TagField("", 48, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("facing:degress", 1, 0)>
Public facing as Single

''' <summary>
''' 
''' </summary>
<TagField("item collection", 16, 10)>
Public item_collection as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 48, -1)>
Public padding_1 as Byte()

End Class
Public Class STARTING_EQUIPMENT_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("type 0", 1, 17)>
Public type_0 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 1", 1, 17)>
Public type_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 2", 1, 17)>
Public type_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 3", 1, 17)>
Public type_3 as Short

''' <summary>
''' 
''' </summary>
<TagField("", 48, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("item collection 1", 16, 10)>
Public item_collection_1 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("item collection 2", 16, 10)>
Public item_collection_2 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("item collection 3", 16, 10)>
Public item_collection_3 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("item collection 4", 16, 10)>
Public item_collection_4 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("item collection 5", 16, 10)>
Public item_collection_5 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("item collection 6", 16, 10)>
Public item_collection_6 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 48, -1)>
Public padding_1 as Byte()

End Class
Public Class BSP_SWITCH_TRIGGER_VOLUMES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("trigger volume", 1, 23)>
Public trigger_volume as Short

''' <summary>
''' 
''' </summary>
<TagField("source", 1, 23)>
Public source as Short

''' <summary>
''' 
''' </summary>
<TagField("destination", 1, 23)>
Public destination as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

End Class
Public Class DECALS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("decal type^", 1, 23)>
Public decal_type as Short

''' <summary>
''' 
''' </summary>
<TagField("yaw[-127,127]", 1, 9)>
Public yaw as Byte

''' <summary>
''' 
''' </summary>
<TagField("pitch[-127,127]", 1, 9)>
Public pitch as Byte

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

End Class
Public Class DECAL_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("reference^", 16, 10)>
Public reference as New TAG_REFERENCE

End Class
Public Class DETAIL_OBJECT_COLLECTION_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 16, 10)>
Public name as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

End Class
Public Class ACTOR_PALETTE_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("reference^", 16, 10)>
Public reference as New TAG_REFERENCE

End Class
Public Class ENCOUNTERS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("team index", 1, 17)>
Public team_index as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("search behavior", 1, 17)>
Public search_behavior as Short

''' <summary>
''' structure bsp index that this encounter belongs to... ignored unless 'manual bsp index' flag is checked. if this flag is not checked, the structure bsp is found automatically (may fail in areas of overlapping geometry)
''' </summary>
<TagField("manual bsp index", 1, 23)>
Public manual_bsp_index as Short

''' <summary>
''' delay between respawning actors in this encounter
''' </summary>
<TagField("respawn delay:seconds", 2, 1)>
Public respawn_delay as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 76, -1)>
Public padding_1 as Byte()

''' <summary>
''' squads_block
''' </summary>
<TagField("squads", 232, 11)>
Public squads as List(Of SQUADS_BLOCK)

''' <summary>
''' platoons_block
''' </summary>
<TagField("platoons", 172, 11)>
Public platoons as List(Of PLATOONS_BLOCK)

''' <summary>
''' firing_positions_block
''' </summary>
<TagField("firing positions", 24, 11)>
Public firing_positions as List(Of FIRING_POSITIONS_BLOCK)

''' <summary>
''' scenario_players_block
''' </summary>
<TagField("player starting locations", 52, 11)>
Public player_starting_locations as List(Of PLAYER_STARTING_LOCATIONS_BLOCK)
Public Class SQUADS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("actor type", 1, 23)>
Public actor_type as Short

''' <summary>
''' 
''' </summary>
<TagField("platoon", 1, 23)>
Public platoon as Short

''' <summary>
''' state that this actor starts in
''' </summary>
<TagField("initial state", 1, 17)>
Public initial_state as Short

''' <summary>
''' state that this actor will return to when it has nothing to do
''' </summary>
<TagField("return state", 1, 17)>
Public return_state as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' what kind of leader this squad has (e.g. a sarge for marines) - 'normal' is based on the size of the squad, 'random' always creates a leader, or you can specify an individual type
''' </summary>
<TagField("unique leader type", 1, 17)>
Public unique_leader_type as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 28, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("maneuver to squad", 1, 23)>
Public maneuver_to_squad as Short

''' <summary>
''' 
''' </summary>
<TagField("squad delay time:seconds", 1, 0)>
Public squad_delay_time as Single

''' <summary>
''' 
''' </summary>
<TagField("attacking", 1, 20)>
Public attacking as Integer

''' <summary>
''' 
''' </summary>
<TagField("attacking search", 1, 20)>
Public attacking_search as Integer

''' <summary>
''' 
''' </summary>
<TagField("attacking guard", 1, 20)>
Public attacking_guard as Integer

''' <summary>
''' 
''' </summary>
<TagField("defending", 1, 20)>
Public defending as Integer

''' <summary>
''' 
''' </summary>
<TagField("defending search", 1, 20)>
Public defending_search as Integer

''' <summary>
''' 
''' </summary>
<TagField("defending guard", 1, 20)>
Public defending_guard as Integer

''' <summary>
''' 
''' </summary>
<TagField("pursuing", 1, 20)>
Public pursuing as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_4 as Byte()

''' <summary>
''' initial number of actors on normal difficulty
''' </summary>
<TagField("normal diff count", 1, 23)>
Public normal_diff_count as Short

''' <summary>
''' initial number of actors on insane difficulty (hard difficulty is midway between normal and insane)
''' </summary>
<TagField("insane diff count", 1, 23)>
Public insane_diff_count as Short

''' <summary>
''' 
''' </summary>
<TagField("major upgrade", 1, 17)>
Public major_upgrade as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_5 as Byte()

''' <summary>
''' minimum number of actors alive at once (will spawn instantly if less than this number)
''' </summary>
<TagField("respawn min actors", 1, 23)>
Public respawn_min_actors as Short

''' <summary>
''' maximum number of actors alive at once (never spawns above this number)
''' </summary>
<TagField("respawn max actors", 1, 23)>
Public respawn_max_actors as Short

''' <summary>
''' total number to respawn (zero = infinite)
''' </summary>
<TagField("respawn total", 1, 23)>
Public respawn_total as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_6 as Byte()

''' <summary>
''' delay between respawning actors in this squad
''' </summary>
<TagField("respawn delay:seconds", 2, 1)>
Public respawn_delay as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 48, -1)>
Public padding_7 as Byte()

''' <summary>
''' move_positions_block
''' </summary>
<TagField("move positions", 80, 11)>
Public move_positions as List(Of MOVE_POSITIONS_BLOCK)

''' <summary>
''' actor_starting_locations_block
''' </summary>
<TagField("starting locations", 28, 11)>
Public starting_locations as List(Of STARTING_LOCATIONS_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_8 as Byte()
Public Class MOVE_POSITIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("facing:degrees", 1, 0)>
Public facing as Single

''' <summary>
''' 
''' </summary>
<TagField("weight", 1, 0)>
Public weight as Single

''' <summary>
''' 
''' </summary>
<TagField("time:seconds", 2, 1)>
Public time as Single()

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

''' <summary>
''' identifies this move position as belonging to a sequence, only actors whose starting locations match this sequence ID can use it (zero = no sequence)
''' </summary>
<TagField("sequence ID", 1, 9)>
Public sequence_ID as Byte

''' <summary>
''' 
''' </summary>
<TagField("", 1, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 44, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("surface index", 1, 4)>
Public surface_index as Integer

End Class
Public Class STARTING_LOCATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("facing:degrees", 1, 0)>
Public facing as Single

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' which move position sequence we can use (zero = no specific sequences)
''' </summary>
<TagField("sequence ID", 1, 9)>
Public sequence_ID as Byte

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 18)>
Public flags as Byte

''' <summary>
''' state that this actor will return to when it has nothing to do
''' </summary>
<TagField("return state", 1, 17)>
Public return_state as Short

''' <summary>
''' state that this actor starts in
''' </summary>
<TagField("initial state", 1, 17)>
Public initial_state as Short

''' <summary>
''' 
''' </summary>
<TagField("actor type", 1, 23)>
Public actor_type as Short

''' <summary>
''' 
''' </summary>
<TagField("command list", 1, 23)>
Public command_list as Short

End Class

End Class
Public Class PLATOONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("change attacking/defending state when", 1, 17)>
Public change_attackingdefending_state_when as Short

''' <summary>
''' 
''' </summary>
<TagField("happens to", 1, 23)>
Public happens_to as Short

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("maneuver when", 1, 17)>
Public maneuver_when as Short

''' <summary>
''' 
''' </summary>
<TagField("happens to", 1, 23)>
Public happens_to_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 64, -1)>
Public padding_5 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 36, -1)>
Public padding_6 as Byte()

End Class
Public Class FIRING_POSITIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("group index", 1, 17)>
Public group_index as Short

''' <summary>
''' 
''' </summary>
<TagField("", 10, -1)>
Public padding as Byte()

End Class
Public Class PLAYER_STARTING_LOCATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("facing:degrees", 1, 0)>
Public facing as Single

''' <summary>
''' 
''' </summary>
<TagField("team index", 1, 23)>
Public team_index as Short

''' <summary>
''' 
''' </summary>
<TagField("bsp index", 1, 23)>
Public bsp_index as Short

''' <summary>
''' 
''' </summary>
<TagField("type 0", 1, 17)>
Public type_0 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 1", 1, 17)>
Public type_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 2", 1, 17)>
Public type_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("type 3", 1, 17)>
Public type_3 as Short

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding as Byte()

End Class

End Class
Public Class COMMAND_LISTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

''' <summary>
''' structure bsp index that this encounter belongs to... ignored unless 'manual bsp index' flag is checked. if this flag is not checked, the structure bsp is found automatically (may fail in areas of overlapping geometry)
''' </summary>
<TagField("manual bsp index", 1, 23)>
Public manual_bsp_index as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_1 as Byte()

''' <summary>
''' ai_command_block
''' </summary>
<TagField("commands", 32, 11)>
Public commands as List(Of COMMANDS_BLOCK)

''' <summary>
''' ai_command_point_block
''' </summary>
<TagField("points", 20, 11)>
Public points as List(Of POINTS_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding_2 as Byte()
Public Class COMMANDS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("atom type", 1, 17)>
Public atom_type as Short

''' <summary>
''' 
''' </summary>
<TagField("atom modifier", 1, 23)>
Public atom_modifier as Short

''' <summary>
''' 
''' </summary>
<TagField("parameter1", 1, 0)>
Public parameter1 as Single

''' <summary>
''' 
''' </summary>
<TagField("parameter2", 1, 0)>
Public parameter2 as Single

''' <summary>
''' 
''' </summary>
<TagField("point 1", 1, 23)>
Public point_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("point 2", 1, 23)>
Public point_2 as Short

''' <summary>
''' 
''' </summary>
<TagField("animation", 1, 23)>
Public animation as Short

''' <summary>
''' 
''' </summary>
<TagField("script", 1, 23)>
Public script as Short

''' <summary>
''' 
''' </summary>
<TagField("recording", 1, 23)>
Public recording as Short

''' <summary>
''' 
''' </summary>
<TagField("command", 1, 23)>
Public command as Short

''' <summary>
''' 
''' </summary>
<TagField("object name", 1, 23)>
Public object_name as Short

''' <summary>
''' 
''' </summary>
<TagField("", 6, -1)>
Public padding as Byte()

End Class
Public Class POINTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

End Class

End Class
Public Class AI_ANIMATION_REFERENCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("animation name^", 32, 8)>
Public animation_name as String

''' <summary>
''' leave this blank to use the unit's normal animation graph
''' </summary>
<TagField("animation graph", 16, 10)>
Public animation_graph as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding as Byte()

End Class
Public Class AI_SCRIPT_REFERENCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("script name^", 32, 8)>
Public script_name as String

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

End Class
Public Class AI_RECORDING_REFERENCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("recording name^", 32, 8)>
Public recording_name as String

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding as Byte()

End Class
Public Class AI_CONVERSATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' distance the player must enter before the conversation can trigger
''' </summary>
<TagField("trigger distance:world units", 1, 0)>
Public trigger_distance as Single

''' <summary>
''' if the 'involves player' flag is set, when triggered the conversation's participant(s) will run to within this distance of the player
''' </summary>
<TagField("run-to-player dist:world units", 1, 0)>
Public run as Single

''' <summary>
''' 
''' </summary>
<TagField("", 36, -1)>
Public padding_1 as Byte()

''' <summary>
''' ai_conversation_participant_block
''' </summary>
<TagField("participants", 84, 11)>
Public participants as List(Of PARTICIPANTS_BLOCK)

''' <summary>
''' ai_conversation_line_block
''' </summary>
<TagField("lines", 124, 11)>
Public lines as List(Of LINES_BLOCK)

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_2 as Byte()
Public Class PARTICIPANTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("selection type", 1, 17)>
Public selection_type as Short

''' <summary>
''' 
''' </summary>
<TagField("actor type", 1, 17)>
Public actor_type as Short

''' <summary>
''' if a unit with this name exists, we try to pick them to start the conversation
''' </summary>
<TagField("use this object", 1, 23)>
Public use_this_object as Short

''' <summary>
''' once we pick a unit, we name it this
''' </summary>
<TagField("set new name", 1, 23)>
Public set_new_name as Short

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("encounter name", 32, 8)>
Public encounter_name as String

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_4 as Byte()

End Class
Public Class LINES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("participant", 1, 23)>
Public participant as Short

''' <summary>
''' 
''' </summary>
<TagField("addressee", 1, 17)>
Public addressee as Short

''' <summary>
''' this field is only used if the addressee type is 'participant'
''' </summary>
<TagField("addressee participant", 1, 23)>
Public addressee_participant as Short

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("line delay time", 1, 0)>
Public line_delay_time as Single

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("variant 1", 16, 10)>
Public variant_1 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("variant 2", 16, 10)>
Public variant_2 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("variant 3", 16, 10)>
Public variant_3 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("variant 4", 16, 10)>
Public variant_4 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("variant 5", 16, 10)>
Public variant_5 as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("variant 6", 16, 10)>
Public variant_6 as New TAG_REFERENCE

End Class

End Class
Public Class SCRIPTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("script type", 1, 17)>
Public script_type as Short

''' <summary>
''' 
''' </summary>
<TagField("return type", 1, 17)>
Public return_type as Short

''' <summary>
''' 
''' </summary>
<TagField("root expression index", 1, 4)>
Public root_expression_index as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 52, -1)>
Public padding as Byte()

End Class
Public Class GLOBALS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("type", 1, 17)>
Public type as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("initialization expression index", 1, 4)>
Public initialization_expression_index as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 48, -1)>
Public padding_2 as Byte()

End Class
Public Class REFERENCES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("reference^", 16, 10)>
Public reference as New TAG_REFERENCE

End Class
Public Class SOURCE_FILES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("name", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("source", 1, 22)>
Public source as New DATA_CONTAINER

End Class
Public Class CUTSCENE_FLAGS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("facing", 2, 1)>
Public facing as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 36, -1)>
Public padding_1 as Byte()

End Class
Public Class CUTSCENE_CAMERA_POINTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("position", 3, 2)>
Public position as Single()

''' <summary>
''' 
''' </summary>
<TagField("orientation", 3, 2)>
Public orientation as Single()

''' <summary>
''' 
''' </summary>
<TagField("field of view", 1, 0)>
Public field_of_view as Single

''' <summary>
''' 
''' </summary>
<TagField("", 36, -1)>
Public padding_2 as Byte()

End Class
Public Class CUTSCENE_TITLES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("name^", 32, 8)>
Public name as String

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_1 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("text bounds (on screen)", 4, 26)>
Public text_bounds as Short()

''' <summary>
''' 
''' </summary>
<TagField("string index", 1, 23)>
Public string_index as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("justification", 1, 17)>
Public justification as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_4 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("text color", 1, 4)>
Public text_color as Integer

''' <summary>
''' 
''' </summary>
<TagField("shadow color", 1, 4)>
Public shadow_color as Integer

''' <summary>
''' 
''' </summary>
<TagField("fade in time [seconds]", 1, 0)>
Public fade_in_time as Single

''' <summary>
''' 
''' </summary>
<TagField("up time [seconds]", 1, 0)>
Public up_time as Single

''' <summary>
''' 
''' </summary>
<TagField("fade out time [seconds]", 1, 0)>
Public fade_out_time as Single

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_5 as Byte()

End Class
Public Class STRUCTURE_BSPS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("bsp offset", 1, 4)>
Public bsp_offset as Integer

''' <summary>
''' 
''' </summary>
<TagField("bsp size", 1, 4)>
Public bsp_size as Integer

''' <summary>
''' 
''' </summary>
<TagField("bsp magic", 1, 4)>
Public bsp_magic as Integer

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("structure bsp^", 16, 10)>
Public structure_bsp as New TAG_REFERENCE

End Class

End Class
